package ele_handler

import (
	"golang.org/x/net/html"
	"strings"
)

func init() {
	registerInitFunc(
		func() YuqueElementHandler {
			h := &textNodeHandler{}
			// h.BaseHandler.self = h
			h.elements = []string{"textNode"}
			return h
		})
}

type textNodeHandler struct {
	BaseHandler
}

func (t *textNodeHandler) checkNode(node *html.Node) bool {
	return node.Type == html.TextNode
}

func (t *textNodeHandler) doHandle() error {
	if len(t.node.Data) > 0 {
		// 在短下划线前面加上 \ ，避免被 markdown 渲染成斜体
		text := strings.ReplaceAll(t.node.Data, "_", "\\_")
		// 如果包裹在 table 里，将文字内容的换行替换为 <br/>
		wrapTable := t.ctxMap["wrapTable"]
		if wrapTable != nil && wrapTable.(bool) {
			text = strings.ReplaceAll(text, "\n", "<br/>")
		}

		t.WriteTextContext(text)
	}
	return nil
}
